package com.lzy.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lzy.dao.SysRoleDao;
import com.lzy.entity.SysRoleEntity;
import com.lzy.service.ISysRoleDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.lzy.dao.SysRoleDeptDao;
import com.lzy.entity.SysRoleDeptEntity;

import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;


@Service("sysRoleDeptService")
public class SysRoleDeptService extends ServiceImpl<SysRoleDeptDao, SysRoleDeptEntity> implements ISysRoleDeptService {

    @Autowired
    private SysRoleDeptDao mapper;

    @Autowired
    private SysRoleDao sysRoleDao;

    @Override
    public IPage<Map<String, Object>> selectPageList(Page<Map<String, Object>> result, LambdaQueryWrapper lqw) {
      return mapper.selectPageList(result, lqw);
    }

    @Override
    public Set<SysRoleEntity> selectDeptRoleInfo(Long deptId) {

      Set<Long> roleIds = mapper.selectList(new QueryWrapper<SysRoleDeptEntity>()
              .eq("dept_id", deptId)).stream()
              .map(item -> item.getRoleId())
              .collect(Collectors.toSet());
      return new HashSet<>(sysRoleDao.selectList(new QueryWrapper<SysRoleEntity>().in("role_id", roleIds)));
    }

  @Override
  public void deleteRoleDeptByRoleId(Long roleId) {
    mapper.delete(Wrappers.<SysRoleDeptEntity>lambdaUpdate().eq(SysRoleDeptEntity::getRoleId, roleId));
  }
}